# 定义：能装大量东西的东西
# 在 python 中 用[] 来表示一个列表，列表中的元素通过,隔开
# lst = ["a", "b", 1, [1, 2, 3, True]]  # 列表也是一个东西，所以列表中还可以放列表
# print(lst)
# 特性
#   1.也想字符串一样有索引和切片
#   2.索引如果超出范围会报错
#   3.可以用 for 循环进行遍历
#   4.用 len 可以拿到列表的长度
# lst = ["张三", "李四", "王五", "李六"]
# print(lst[0])
# print(lst[1:3])
# print(lst[::-1])
# print(lst[1000000])  # list index out of range
# for i in lst:
#     print(i)
# print(len(lst))

# ============================================================
# 列表的增删改查
# lst = []
# # 向列表中添加内容
# # append() 追加，这个是需要记住的，常用 *
# lst.append("张三")
# lst.append("李四")
# lst.append("小吴")
# # insert() 插入，插入的位置后面的元素都要向后移动一个位置，如果插入的位置在最前边，那么效率较差
# lst.insert(0, "小哈")
# # extend()  可以合并两个列表，批量添加
# lst.extend(["小七", "小八"])
# print(lst)

# 删除
# pop() 给出要删除的元素的索引，返回被删除的元素
# ret = lst.pop(3)
# print(lst)
# print(ret)
# # remove() # 删除某个元素，这个需要记住。给出要删除的元素  *
# lst.remove("张三")
# print(lst)
#
# # 修改
# lst[1] = "小萱"  # 直接可以用索引就可以修改
# print(lst)
#
# # 查询
# print(lst[0])  # 直接可以用索引进行查询

# for i in lst:  # 此时看不到元素的索引
#     print(i)
#     if i.startswith("小"):
#         # 得到新名字
#         new_name = "大" + i[1:]
#         print(new_name)
#         # 把新名字放到列表中
#         print(lst.index(i))
#         lst[lst.index(i)] = new_name
# print(lst)


# for i in range(len(lst)):  # len(lst)列表的长度 -> 可以直接拿到索引的 for 循环
#     item = lst[i]
#     if item.startswith("小"):
#         # 得到新名字
#         new_name = "大" + item[1:]
#         print(new_name)
#         # 把新名字放到列表中
#         lst[i] = new_name
# print(lst)


# ==================================================
# 排序
# lst = [1, 2, 3, "小小哈"]  # 列表是有顺序的，是按照存放进去的时候 排序的
# print(lst)
# lst = [1111, 2222, 4444, 3333, 5555, 11, 555, 66]
# print(lst)
# lst.sort()  # 列表进行升序排序
# print(lst)
# lst.sort(reverse=True)  # reverse: 翻转   降序
# # lst.reverse()  # 列表降序
# print(lst)


# 列表的嵌套
# lst = ["abc", "def", "ghi", "jkl", ["可乐", "呼吸", 123, ["你好", "呵呵哒", "哈哈哒", "thanks"]], "add", "w22"]
# print(lst[4][3][0])
# lst[4][3][3] = lst[4][3][3].upper()  # 字符串是不可变的，赋值替换
# print(lst)


# 列表的循环删除
# 删除列表中姓李的人
# lst = ["张三", "李四", "李起", "王五", "李六"]
# for i in lst:
#     if i.startswith("李"):
#         lst.remove(i)  # 发现李起没有删除掉，删除掉元素后，后边的元素要向前移动，但是 for 循环还得继续往前移动，所以循环的时候就会漏掉判断
# print(lst)

lst = ["张三", "李四", "李起", "王五", "李六"]
temp = []  # 临时列表，负责存储要删除的内容
for i in lst:
    if i.startswith("李"):
        temp.append(i)

for i in temp:
    lst.remove(i)  # 去原列表中进行删除操作
print(lst)
# 安全稳妥的删除方式：
#   将要删除的内容保存在一个新列表中，循环新列表，删除老列表


